Networks typically use various network devices to forward data packets based on destination information in the packet. Network services inspect and alter the packets transiting through the network to ensure that the packets are passed to a network device that is able to respond to the packet. These network devices (also referred to “network services,” “service function devices,” and/or “services”) provide various network functions, such as network address translation, forwarding, classification, caching, virus scanning, firewalling, and/or deep packet inspection.
In order to avoid the unnecessary use of a service, packets (traffic) are steered to a specific set of services instead of passing through every service in a network. Service chaining allows network traffic to be steered to the network services needed by the particular packet and network service. A service chain is an ordered set of network services. Traffic steering is the action of classifying traffic and directing the different classes of traffic through specific service chains.
Traditionally, service chaining has been implemented through tunneling, switching, virtual local area network (“VLAN”) mapping, and policy-based routing (“PBR”). Each of these service chaining techniques have various drawbacks, such as integration problems, configuration problems, and/or scaling problems.